package com.christina.engine.processing.model;

/**
 * 处理事件类型枚举
 * 定义处理过程中可能发生的各种事件类型
 */
public enum ProcessingEventType {
    
    // 请求处理相关事件
    REQUEST_RECEIVED("请求已接收"),
    REQUEST_VALIDATED("请求验证完成"),
    REQUEST_VALIDATION_FAILED("请求验证失败"),
    
    // 上下文相关事件
    CONTEXT_LOADED("上下文已加载"),
    CONTEXT_UPDATED("上下文已更新"),
    CONTEXT_SAVED("上下文已保存"),
    
    // 意图识别相关事件
    INTENT_RECOGNITION_STARTED("意图识别开始"),
    INTENT_RECOGNIZED("意图识别完成"),
    INTENT_RECOGNITION_FAILED("意图识别失败"),
    
    // 决策相关事件
    DECISION_STARTED("决策制定开始"),
    DECISION_MADE("决策制定完成"),
    DECISION_FAILED("决策制定失败"),
    
    // 服务执行相关事件
    SERVICE_EXECUTION_STARTED("服务执行开始"),
    SERVICE_EXECUTED("服务执行完成"),
    SERVICE_EXECUTION_FAILED("服务执行失败"),
    
    // 响应生成相关事件
    RESPONSE_GENERATION_STARTED("响应生成开始"),
    RESPONSE_GENERATED("响应生成完成"),
    RESPONSE_GENERATION_FAILED("响应生成失败"),
    
    // 状态变更事件
    STATE_CHANGED("状态已变更"),
    
    // 错误和异常事件
    ERROR_OCCURRED("发生错误"),
    EXCEPTION_THROWN("抛出异常"),
    
    // 性能和监控事件
    PERFORMANCE_METRIC_RECORDED("性能指标已记录"),
    CACHE_HIT("缓存命中"),
    CACHE_MISS("缓存未命中"),
    
    // 配置和管理事件
    CONFIGURATION_UPDATED("配置已更新"),
    PROCESSOR_REGISTERED("处理器已注册"),
    PROCESSOR_UNREGISTERED("处理器已注销");
    
    private final String description;
    
    ProcessingEventType(String description) {
        this.description = description;
    }
    
    public String getDescription() {
        return description;
    }
    
    @Override
    public String toString() {
        return name() + "(" + description + ")";
    }
}